package com.aleyn.router.inject

import androidx.annotation.Keep

/**
 * @author: Aleyn
 * @date: 2024/4/1 14:49
 *
 * 这是一个由 LRouter 的注解处理器在编译时生成的接口。
 * 每个模块都会生成一个实现该接口的类，用于执行模块相关的初始化操作。
 */
@Keep
interface ILRouterGenerate {

    /**
     * 为目标对象注入（Autowired）依赖。
     * 通常在 Activity 或 Fragment 的 `onCreate` 方法中调用。
     *
     * @param target 需要注入依赖的目标对象，例如 Activity 或 Fragment 实例。
     */
    fun injectAutowired(target: Any?)

    /**
     * 初始化当前模块的路由表。
     * 该方法会扫描模块中所有被 `@Route` 注解标记的类，并将它们注册到全局路由表中。
     */
    fun initModuleRouter()

    /**
     * 注册当前模块的所有拦截器。
     * 该方法会扫描模块中所有实现了 `LRouterInterceptor` 的类，并将它们注册到全局拦截器列表中。
     */
    fun registerIntercept()

    /**
     * 注册当前模块的所有初始化器。
     * 该方法会扫描模块中所有实现了 `LRouterInitializer` 的类，并将它们注册到全局初始化器列表中。
     */
    fun registerAllInitializer()

}